@node POSIX interface
@chapter POSIX interface

@i{(This chapter was derived from work copyrighted @copyright{}
1993--2005 by Richard Kelsey, Jonathan Rees, and Mike Sperber.)}

@texonlyindent
This chapter describes Scheme48's interface to POSIX C calls.  Scheme
versions of most of the C functions in POSIX are provided.  Both the
interface and implementation are new and likely to change significantly
in future releases.  The implementation may also contain many bugs.

The POSIX bindings are available in several structures:

@table @code
@stindex posix-processes
@item posix-processes
@code{fork}, @code{exec}, and other process manipulation procedures

@stindex posix-process-data
@item posix-process-data
procedures for accessing information about processes

@stindex posix-files
@item posix-files
POSIX file system access procedures

@stindex posix-i/o
@item posix-i/o
pipes and various POSIX I/O controls

@stindex posix-time
@item posix-time
POSIX time operations

@stindex posix-users
@item posix-users
user and group manipulation procedures

@stindex posix-regexps
@item posix-regexps
POSIX regular expression construction and matching

@stindex posix
@item posix
all of the above
@end table

Scheme48's POSIX interface differs from scsh [Shivers 94; Shivers 96;
Shivers @etal{} 04] in several ways.  The interface here lacks scsh's
high-level constructs and utilities such as the process notation,
@code{awk} facility, and parsing utilities.  Scheme48 uses disjoint
types for some values that scsh leaves as symbols or simple integers;
these include file types, file modes, and user & group ids. Many of
the names and other interface details are different as well.

@menu
@include posix/menu.texi
@end menu

@include posix/process.texi
@include posix/signal.texi
@include posix/proc-env.texi
@include posix/user-grp.texi
@include posix/host-ident.texi
@include posix/fs.texi
@include posix/time.texi
@include posix/io.texi
@include posix/regexp.texi
@include posix/c-to-scm.texi
